package com.mz361.stdapi.service;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.mz361.stdapi.domain.PackagesResult;
import com.mz361.stdapi.domain.PlanClass;
import com.mz361.stdapi.domain.UserPackageResult;
import redis.clients.jedis.Tuple;

import java.util.List;
import java.util.Set;

public interface STDAPIService {
    /**
     * 获取标准分类接口
     *
     * @return
     */
    JSONArray getStandardClass();


    /**
     * 获取计划分类统计数据
     *
     * @return
     */
    List<PlanClass> getPlanClass();


    /**
     * 查询用户搜索历史
     *
     * @param userId
     * @return
     */
    Set<Tuple> searchHistory(String userId);

    /**
     * 清除历史搜素记录
     *
     * @param userId
     */
    void clearHistory(String userId);

    /**
     * 获取文件url
     *
     * @param userId
     * @param standardNo
     * @return
     */
    JSONObject fileURL(String userId, String standardNo);

    /**
     * 获取文件url
     *
     * @param key
     * @param standardNo
     * @return
     */
    String v2fileURL(String key, String standardNo);

    /**
     * 获取文件预览图片
     *
     * @param standardNo
     * @param start
     * @param end
     * @return
     */
    List<String> v2imageURLs(String standardNo, Integer start, Integer end);

    /**
     * 下载回调 操作套餐减一
     *
     * @param standardNo
     */
    boolean downLoadNotify(String userId, String standardNo, String title);

    /**
     * 下载回调 操作套餐减一
     *
     * @param key
     * @param standardNo
     * @param title
     * @return
     */
    boolean v2downLoadNotify(String key, String standardNo, String title);

    /**
     * 在线阅读 回调记录阅读排名
     *
     * @param userId
     * @param standardNo
     */
    boolean readOnLineNotify(String userId, String standardNo, String title);

    /**
     * 在线阅读 回调记录阅读排名
     *
     * @param key
     * @param standardNo
     * @param title
     * @return
     */
    boolean v2readOnLineNotify(String key, String standardNo, String title);

    /**
     * 根据用户ID查询套餐使用情况
     *
     * @param userId
     * @return
     */
    UserPackageResult getUserPacakge(String userId);

    /**
     * 根据渠道Key查询套餐使用情况
     *
     * @param key
     * @return
     */
    UserPackageResult v2getUserPacakge(String key);

    /**
     * 根据用户ID查询所有套餐
     *
     * @param userId
     * @return
     */
    PackagesResult getPackages(String userId);


    /**
     * 保存客户需求
     *
     * @param needs
     * @param currentStatus
     * @param conditionsProvided
     * @param consultant
     * @param consultUnit
     * @param contact
     * @return
     */
    void custNeeds(String needs, String currentStatus, String conditionsProvided, String consultant, String consultUnit, String contact);

}
